// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IMainForm.cs" company="SMART business">
//   SMART business.
// </copyright>
// <summary>
//   The MainForm interface.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace ComparisonTool.Forms.Interfaces
{
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;

    /// <summary>
    /// The MainForm interface.
    /// </summary>
    public interface IMainForm
    {
        /// <summary>
        /// The inverse compare.
        /// </summary>
        event EventHandler InverseCompare;

        /// <summary>
        /// The export to excel.
        /// </summary>
        event EventHandler ExportToExcel;

        /// <summary>
        /// The form selected.
        /// </summary>
        event EventHandler FormSelected;

        /// <summary>
        /// The load entities.
        /// </summary>
        event EventHandler LoadEntities;

        /// <summary>
        /// The load double entities.
        /// </summary>
        event EventHandler LoadDoubleEntities;

        /// <summary>
        /// The entity select.
        /// </summary>
        event EventHandler EntitySelect;

        /// <summary>
        /// The compare attributes.
        /// </summary>
        event EventHandler CompareAttributes;

        /// <summary>
        /// The set entities list.
        /// </summary>
        /// <param name="entities">
        /// The entities.
        /// </param>
        void SetEntitiesList(List<object> entities);

        /// <summary>
        /// The set entities list.
        /// </summary>
        /// <param name="id">
        /// The id.
        /// </param>
        /// <param name="entities">
        /// The entities.
        /// </param>
        void SetEntitiesList(int id, List<object> entities);

        /// <summary>
        /// The entities compare.
        /// </summary>
        event EventHandler EntitiesCompare;

        /// <summary>
        /// The Show same entities.
        /// </summary>
        event EventHandler ShowSameEntities;

        /// <summary>
        /// The show distinct entity.
        /// </summary>
        event EventHandler ShowDistinctEntity;

        /// <summary>
        /// The set current entity value.
        /// </summary>
        void SetCurrentEntityValue();

        /// <summary>
        /// The set forms 1 list.
        /// </summary>
        /// <param name="forms">
        /// The forms.
        /// </param>
        void SetForms1List(List<object> forms);

        /// <summary>
        /// The set forms 2 list.
        /// </summary>
        /// <param name="forms">
        ///     The forms.
        /// </param>
        void SetForms2List(List<object> forms);

        /// <summary>
        /// The set attribute 1 list.
        /// </summary>
        /// <param name="id">
        /// </param>
        /// <param name="attributes">
        /// The attributes.
        /// </param>
        void SetAttributesList(int id, List<object> attributes);

        /// <summary>
        /// The set event 1 list.
        /// </summary>
        /// <param name="id">
        /// </param>
        /// <param name="events">
        /// The events.
        /// </param>
        void SetEventsList(int id, List<object> events);

        /// <summary>
        /// The set rules 2 list.
        /// </summary>
        /// <param name="id"></param>
        /// <param name="rules">
        ///     The rules.
        /// </param>
        void SetRulesList(int id, List<object> rules);

        /// <summary>
        /// The set org 1 caption.
        /// </summary>
        /// <param name="text">
        /// The count.
        /// </param>
        void SetOrg1Caption(string text);

        /// <summary>
        /// The set org 2 caption.
        /// </summary>
        /// <param name="text">
        /// The count.
        /// </param>
        void SetOrg2Caption(string text);

        /// <summary>
        /// The set entities count.
        /// </summary>
        /// <param name="count">
        /// The count.
        /// </param>
        void SetEntitiesCount(string count);

        /// <summary>
        /// The get form 1.
        /// </summary>
        /// <returns>
        /// The <see cref="ComboboxItem"/>.
        /// </returns>
        ComboboxItem GetForm1();

        /// <summary>
        /// The get form 2.
        /// </summary>
        /// <returns>
        /// The <see cref="ComboboxItem"/>.
        /// </returns>
        ComboboxItem GetForm2();

        /// <summary>
        /// The get main form.
        /// </summary>
        /// <returns>
        /// The <see cref="Control"/>.
        /// </returns>
        Control GetMainForm();

        /// <summary>
        /// The get connect control 1.
        /// </summary>
        /// <param name="id">
        /// The id.
        /// </param>
        /// <returns>
        /// The <see cref="ToolStripDropDownButton"/>.
        /// </returns>
        ToolStripDropDownButton GetConnectControl(int id);

        /// <summary>
        /// The set status connection.
        /// </summary>
        /// <param name="statusMessage">
        /// The status message.
        /// </param>
        /// <param name="id">
        /// The id.
        /// </param>
        void SetStatusConnection(string statusMessage, int id);

        /// <summary>
        /// The set entity caption.
        /// </summary>
        /// <param name="id">
        /// The id.
        /// </param>
        /// <param name="caption">
        /// The caption.
        /// </param>
        void SetEntityCaption(int id, string caption);

        int GetSelectedEntityCount();
    }
}